package com.ruoyi.system.domain;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 考勤管理对象 sys_attendance_record
 * 
 * @author ruoyi
 * @date 2025-04-21
 */
@Data
public class SysAttendanceRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 签到编号 */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /** 课程编号 */
    @Excel(name = "课程编号")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long courseId;

    /** 学生编号 */
    @Excel(name = "学生编号")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;

    /** 签到时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签到时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date checkInTime;

    /** 课程作业答题图片 */
    @Excel(name = "课程作业答题图片")
    private String homeworkAnswer;

    /** 课程作业分数 */
    @Excel(name = "课程作业分数")
    private Long homeworkScore;

    /** 课后习题答题图片 */
    @Excel(name = "课后习题答题图片")
    private String homeworkExercisesAnswer;

    /** 客户习题答题分数 */
    @Excel(name = "客户习题答题分数")
    private Long homeworkExercisesScore;

    /** 考勤状态 */
    @Excel(name = "考勤状态")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setCourseId(Long courseId) 
    {
        this.courseId = courseId;
    }

    public Long getCourseId() 
    {
        return courseId;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setCheckInTime(Date checkInTime) 
    {
        this.checkInTime = checkInTime;
    }

    public Date getCheckInTime() 
    {
        return checkInTime;
    }

    public void setHomeworkAnswer(String homeworkAnswer) 
    {
        this.homeworkAnswer = homeworkAnswer;
    }

    public String getHomeworkAnswer() 
    {
        return homeworkAnswer;
    }

    public void setHomeworkScore(Long homeworkScore) 
    {
        this.homeworkScore = homeworkScore;
    }

    public Long getHomeworkScore() 
    {
        return homeworkScore;
    }

    public void setHomeworkExercisesAnswer(String homeworkExercisesAnswer) 
    {
        this.homeworkExercisesAnswer = homeworkExercisesAnswer;
    }

    public String getHomeworkExercisesAnswer() 
    {
        return homeworkExercisesAnswer;
    }

    public void setHomeworkExercisesScore(Long homeworkExercisesScore) 
    {
        this.homeworkExercisesScore = homeworkExercisesScore;
    }

    public Long getHomeworkExercisesScore() 
    {
        return homeworkExercisesScore;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("courseId", getCourseId())
            .append("userId", getUserId())
            .append("checkInTime", getCheckInTime())
            .append("homeworkAnswer", getHomeworkAnswer())
            .append("homeworkScore", getHomeworkScore())
            .append("homeworkExercisesAnswer", getHomeworkExercisesAnswer())
            .append("homeworkExercisesScore", getHomeworkExercisesScore())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
